﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace Presentation
{
    public partial class LapPhieuThue : Form
    {
        List<KhachHangDTO> dsKhachThemVao = new List<KhachHangDTO>();
        public KhachHangDTO khachEdit= new KhachHangDTO();
        public LapPhieuThue()
        {
            InitializeComponent();
        }
        public void layDSKhachMoiThem()
        {
            grid_dsKhachThem.Rows.Clear();
            if (dsKhachThemVao != null)
            {
                for (int i = 0; i < dsKhachThemVao.Count(); i++)
                {
                    grid_dsKhachThem.Rows.Add(i + 1, dsKhachThemVao[i].MaKhachHang, dsKhachThemVao[i].TenKhachHang, dsKhachThemVao[i].LoaiKhach.TenLoaiKhach, dsKhachThemVao[i].CMND, dsKhachThemVao[i].DiaChi);
                    grid_dsKhachThem.Rows[grid_dsKhachThem.RowCount - 1].Tag = dsKhachThemVao[i];


                }
                //grid_dsKhachThem.Rows.Add();
            }

        }
        private void button1_Click(object sender, EventArgs e)
        {
            PhongDTO phongDuocChon = (PhongDTO)cbb_tenphong.Items[cbb_tenphong.SelectedIndex];

            long soKhachToiDa= ThamSoBUS.laySoKhachToiDa();
            
            long soKhachCoTheThem = soKhachToiDa;//- phongDuocChon.SoKhachHienCo;
            if (dsKhachThemVao.Count() <soKhachCoTheThem  )
            {
                TiepNhanKhachMoi form = new TiepNhanKhachMoi();
                form.ShowDialog();
                if (form.layKhachThemVao() != null)
                {
                    KhachHangDTO khach = form.layKhachThemVao();
                    dsKhachThemVao.Add(khach);
                    layDSKhachMoiThem();
                }
 
            }
            else
            {
                string a = soKhachToiDa.ToString();
                string b = phongDuocChon.SoKhachHienCo.ToString();
                MessageBox.Show("Không được thêm khách, số khách mỗi phòng không vượt quá "+a+"..." ,"Thông Báo");
            }

        }

        private void button5_Click(object sender, EventArgs e)
        {
            if (grid_dsKhachThem.CurrentRow.Tag != null)
            {
                CapNhatKhach form = new CapNhatKhach();
                
                KhachHangDTO khachDuocChon=new KhachHangDTO();
                khachDuocChon = (KhachHangDTO)grid_dsKhachThem.CurrentRow.Tag;
                form.layThongTinKhachDuocChon(khachDuocChon);
                form.ShowDialog();
                if (form.layKhachMoiCapNhat() != null)
                {
                    int a = 0;
                    KhachHangDTO khachCapNhat=new KhachHangDTO();
                    khachCapNhat=form.layKhachMoiCapNhat();
                    for (int i = 0; i < dsKhachThemVao.Count; i++)
                    {
                        if (dsKhachThemVao[i]==khachDuocChon)
                            a = i;
                    }
                    dsKhachThemVao.RemoveAt(a);
                    dsKhachThemVao.Insert(a, khachCapNhat);
                }
                layDSKhachMoiThem();
            }
            else
            {
                MessageBox.Show("Vui lòng chọn khách hàng muốn sửa đổi thông tin", "Thông báo");
            }
        }



        private void LapPhieuThue_Load(object sender, EventArgs e)
        {
            layDSPhong();
            //layDSKhachMoiThem();
        }
        private void layDSPhong()
        {
            List<PhongDTO> danhSachPhong= PhongBUS.layDSPhong();
            cbb_tenphong.DataSource = danhSachPhong;
            cbb_tenphong.DisplayMember = "TenPhong";
            
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void grid_dsKhachThem_SelectionChanged_1(object sender, EventArgs e)
        {
            if (grid_dsKhachThem.CurrentRow.Tag != null)
            {
                KhachHangDTO khachDuocChon = (KhachHangDTO)grid_dsKhachThem.CurrentRow.Tag;

                              
                
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (grid_dsKhachThem.CurrentRow.Tag != null)
            {
               
                    
                    if (MessageBox.Show("Bạn có thật muốn xóa?", "Hỏi", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        KhachHangDTO khachDuocChon = (KhachHangDTO)grid_dsKhachThem.CurrentRow.Tag;

                        
                        bool ketQua = KhachHangBUS.xoa(khachDuocChon.MaKhachHang);
                        if (ketQua == false)
                        {
                            MessageBox.Show("Xóa thất bại");
                        }
                        else
                        {
                            int a = 0;
                            MessageBox.Show("Xóa thành công");
                            for(int i=0;i<dsKhachThemVao.Count;i++)
                            {
                               if( dsKhachThemVao[i] == khachDuocChon)
                                   a=i;
                            }
                            dsKhachThemVao.RemoveAt(a);
                            layDSKhachMoiThem();
                        }
                    }
              }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            int check = 0;
            PhieuThuePhongDTO phieuThue= new PhieuThuePhongDTO();
            ChiTietPhieuThueDTO chiTietPhieuThue = new ChiTietPhieuThueDTO();

            if ((cbb_tenphong.SelectedIndex >= 0) && (dsKhachThemVao.Count() != 0))
            {
                try
                {
                    PhongDTO phongDuocChon = (PhongDTO)cbb_tenphong.Items[cbb_tenphong.SelectedIndex];
                    if (phongDuocChon.SoKhachHienCo == 3)
                    {
                        MessageBox.Show("Số khách hiện có trong phòng là 3 người nên không thể lập phiếu thuê...Xin vui lòng chọn lại phòng khác!!", "Thông báo");
                        return;
                    }
                    phieuThue.Phong = phongDuocChon;
                    phieuThue.NgayBatDauThue = db_ngayBatDauThue.Value;

                    bool ketQua = PhieuThuePhongBUS.them(phieuThue);
                    if (ketQua == false)
                        throw new Exception();

                    check = 1;

                    //MessageBox.Show("Tạo phiếu thuê thành công");

                }
                catch (Exception ex)
                {
                    check = 0;
                    return;
                    //MessageBox.Show("Tạo phiếu thuê thất bại");
                }
                if (check == 1)
                {

                    for (int k = 0; k < dsKhachThemVao.Count; k++)
                    {

                        KhachHangDTO khachHang = dsKhachThemVao[k];
                        phieuThue.MaPhieuThue = PhieuThuePhongBUS.layMaPhieuThueLonNhat();
                        try
                        {

                            chiTietPhieuThue.PhieuThue = phieuThue;


                            chiTietPhieuThue.KhachHang = khachHang;


                            bool ketQua = ChiTietPhieuThueBUS.them(chiTietPhieuThue);
                            if (ketQua == false)
                                throw new Exception();
                        }
                        catch (Exception ex)
                        {
                            string a = k.ToString();
                            MessageBox.Show("Tạo phiếu thuê thất bại ở khách hàng " + a, "Thông báo");
                        }

                    }
                    PhongBUS.capNhatSoKhachHienCo(phieuThue.Phong.MaPhong, dsKhachThemVao.Count);
                    MessageBox.Show("Tạo phiếu thuê thành công", "Thông Báo");
                }

            }
            else
            {
                if (dsKhachThemVao.Count == 0)
                {
                    MessageBox.Show("Không có khách hàng không thể tạo phiếu...Xin vui lòng thêm khách hàng", "Thông báo");
                    return;
                };
            }
                                            
        }

        private void cbb_tenphong_SelectedIndexChanged(object sender, EventArgs e)
        {
            PhongDTO phongDuocChon = (PhongDTO)cbb_tenphong.Items[cbb_tenphong.SelectedIndex];
            if (phongDuocChon.SoKhachHienCo == 3)
                MessageBox.Show("Phòng này hiện đã đủ 3 khách đang thuê...Xin vui lòng chọn phòng khác", "Thông báo");
           
        }








    }
}
